home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / TinyGL / ami / content / ad709 / tinygl / src / api_get.c < prev    next >
Encoding:
C/C++ Source or Header  |  2002-08-19  |  2.4 KB  |  96 lines

  1. /*$T api_get.c GC 1.137 08/09/02 17:47:18 */
  2.  
  3. /*$6
  4.  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  5.  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  6.  */
  7.  
  8. #include "zgl.h"
  9.  
  10. static const GLubyte    *__glVendor = "Ruben Monteiro";
  11. static const GLubyte    *__glRenderer = "TinyGL software engine";
  12. static const GLubyte    *__glVersion = "0.4";
  13. static const GLubyte    *__glExtensions = "";
  14.  
  15. /* */
  16. void GLAPIENTRY glGetIntegerv(GLenum pname, GLint *params) {
  17.     GLContext    *c = gl_get_context();
  18.     /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
  19.  
  20.     switch((int) pname) {
  21.     case GL_VIEWPORT:
  22.         params[0] = c->viewport.xmin;
  23.         params[1] = c->viewport.ymin;
  24.         params[2] = c->viewport.xsize;
  25.         params[3] = c->viewport.ysize;
  26.         break;
  27.     case GL_MAX_MODELVIEW_STACK_DEPTH:
  28.         *params = MAX_MODELVIEW_STACK_DEPTH;
  29.         break;
  30.     case GL_MAX_PROJECTION_STACK_DEPTH:
  31.         *params = MAX_PROJECTION_STACK_DEPTH;
  32.         break;
  33.     case GL_MAX_LIGHTS:
  34.         *params = MAX_LIGHTS;
  35.         break;
  36.     case GL_MAX_TEXTURE_SIZE:
  37.         *params = 256;        /* not completely true, but... */
  38.         break;
  39.     case GL_MAX_TEXTURE_STACK_DEPTH:
  40.         *params = MAX_TEXTURE_STACK_DEPTH;
  41.         break;
  42.     default:
  43.         gl_fatal_error("glGet: option not implemented");
  44.         break;
  45.     }
  46. }
  47.  
  48. /* */
  49. void GLAPIENTRY glGetFloatv(GLenum pname, GLfloat *params) {
  50.     int            i;
  51.     int            mnr = 0;    /* just a trick to return the correct matrix */
  52.     GLContext    *c = gl_get_context();
  53.     switch(pname) {
  54.     case GL_TEXTURE_MATRIX:
  55.         mnr++;
  56.     case GL_PROJECTION_MATRIX:
  57.         mnr++;
  58.     case GL_MODELVIEW_MATRIX: {
  59.             float    *p = &c->matrix_stack_ptr[mnr]->m[0][0];;
  60.             for(i = 0; i < 4; i++) {
  61.                 *params++ = p[0];
  62.                 *params++ = p[4];
  63.                 *params++ = p[8];
  64.                 *params++ = p[12];
  65.                 p++;
  66.             }
  67.         }
  68.         break;
  69.     case GL_LINE_WIDTH:
  70.         *params = 1.0f;
  71.         break;
  72.     case GL_LINE_WIDTH_RANGE:
  73.         params[0] = params[1] = 1.0f;
  74.         break;
  75.     case GL_POINT_SIZE:
  76.         *params = 1.0f;
  77.         break;
  78.     case GL_POINT_SIZE_RANGE:
  79.         params[0] = params[1] = 1.0f;
  80.     default:
  81.         fprintf(stderr, "warning: unknown pname in glGetFloatv()\n");
  82.         break;
  83.     }
  84. }
  85.  
  86. const GLubyte * GLAPIENTRY glGetString (GLenum name) {
  87.     switch(name) {
  88.     case GL_VENDOR:        return __glVendor;
  89.     case GL_RENDERER:    return __glRenderer;
  90.     case GL_VERSION:    return __glVersion;
  91.     case GL_EXTENSIONS: return __glExtensions;
  92.     default:            fprintf(stderr, "warning: unknown name in glGetString()\n"); break;
  93.     }
  94.     return NULL;
  95. }
  96.